package com.wyix;

import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicIntegerArray;
import java.util.concurrent.atomic.AtomicReference;

/**
 * @author wangdx
 * @since 2025/8/4
 */
public class AtomicDemo {
    public static void main(String[] args) {
        // 1. 基本类型原子类
        AtomicInteger count = new AtomicInteger(0);
        count.incrementAndGet(); // 原子自增（替代count++）
        count.addAndGet(5); // 原子累加

        // 2. 引用类型原子类
        AtomicReference<User> userRef = new AtomicReference<>();
        User user = new User("张三");
        userRef.compareAndSet(null, user); // 当值为null时设置新值

        // 3. 数组原子类
        AtomicIntegerArray array = new AtomicIntegerArray(10);
        array.set(0, 10);
        array.getAndIncrement(0); // 数组元素原子自增
    }

    static class User {
        String name;

        User(String name) {
            this.name = name;
        }
    }
}